package com.whosly.mysql.protocol.jdbc;

import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * 支持的连接中的自定义 tag
 *
 * @author fengyang
 * @date 2023/7/17 下午8:04
 * @see <a href="yueny09@163.com">mailTo: yueny09@163.com</a>
 */
public enum ConnectionAttributesTag
{
    /**
     * MYSQL协议在出现错误时，是否回写 processId 信息和错误错误。
     *
     * true： 回写，默认
     * false: 不回写
     */
    REWRITE_PROCESS("_rewrite_process"),

    /**
     * 请求可能被转发重写。此值记录的是转发方的地址信息
     */
    REWRITE_FROM_ADDRESS("_rewrite_from_address"),

    ;

    private String val;

    ConnectionAttributesTag(String data)
    {
        this.val = data;
    }

    public String getVal()
    {
        return val;
    }

    public static final Map<String, ConnectionAttributesTag> getAllEntry()
    {
        return Arrays.stream(ConnectionAttributesTag.values())
                .collect(Collectors.toMap(ConnectionAttributesTag::getVal, Function.identity(), (key1, key2) -> key2));
    }

    public static final ConnectionAttributesTag of(String val)
    {
        for (ConnectionAttributesTag tag : values()) {
            if(StringUtils.equals(tag.getVal(), val)){
                return tag;
            }
        }

        return null;
    }
}
